package Modelo;

import java.util.*;

public class Usuario {

    private String contrasenya;
    private String nombre;
    protected TicketCine ticketCine;
    protected Entrada entrada;
    protected Cine cine;
    protected Sala sala;
    private String horario;
    protected GestorTicketCine gestorTicketCine;
    protected ArrayList<Pelicula> peliculas;
    //protected ArrayList<Critica> criticas = new ArrayList<>(10);
    protected ArrayList<Cine> cines;
    protected ArrayList<Provincia> provincias;
    protected ArrayList<Sesion> sesiones;
    //protected ArrayList<EntradaParaUsuario> entradas = new ArrayList<>(10);
  
    private static final String[] meses = {"enero", "febrero", "marzo", "abril", "mayo",
        "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"};

    public Usuario(TicketCine tK) {
        ticketCine = tK;
    }

    public Usuario(String nombre, String contrasenya) {
        this.nombre = nombre;
        this.contrasenya = contrasenya;
    }

    public TicketCine getTicketCine() {
        return ticketCine;
    }

    public void setTicketCine(TicketCine ticketCine) {
        this.ticketCine = ticketCine;
    }
    

    public void iniciarConsultar(ArrayList listaProvincias) {
        provincias = ticketCine.getProvincias();
        listaProvincias.addAll(provincias);
    }

    public void setGestorTicketCine(GestorTicketCine gT) {
        gestorTicketCine = gT;
    }

//    public ArrayList<Critica> getCriticas() {
//        return criticas;
//    }
//    
//    public void setCriticas(ArrayList<Critica> criticas) {
//        this.criticas = criticas;
//    }
//    
//    public void addCriticas(Critica critica) {
//        this.criticas.add(critica);
//    }

    
    
    public void consultarOperacion() {
        throw new UnsupportedOperationException();
    }

    public void IniciarComprarEntrada() {

        throw new UnsupportedOperationException();
    }

    public String consultarCines() {
        throw new UnsupportedOperationException();
    }

    public String consultarPeliculas() {
        throw new UnsupportedOperationException();
    }
 
    public ArrayList<Cine> buscarCinesPorProvincia(String prov) {
        ArrayList<Cine> cineProv = new ArrayList<>();
        for (Provincia p : provincias) {
            if (p.getProvincia().equals(prov)) {
                cineProv = p.getCines();
            }
        }
        return cineProv;
    }

    public ArrayList<Pelicula> buscarPeliculasPorProvinciaYCine(String prov, String cine_STR) {

        ArrayList<Cine> cineProv = new ArrayList<>();
        for (Provincia p : provincias) {
            if (p.getProvincia().equals(prov)) {
                cineProv = p.getCines();
            }
        }

        ArrayList<Pelicula> cinePel = new ArrayList<>();
        for (Cine c : cineProv) {

            if (c.getCine().equals(cine_STR)) {
                cinePel = c.getPeliculas();
            }

        }
        return cinePel;
    }
 public ArrayList<Sala> buscarSalaPorProvinciaPeliYCine(String prov, String peli, String cine_STR) {

        ArrayList<Cine> cineProv = new ArrayList<>();
        for (Provincia p : provincias) {
            if (p.getProvincia().equals(prov)) {
                cineProv = p.getCines();
            }
        }

        ArrayList<Sala> salaPel = new ArrayList<>();
        for (Cine c : cineProv) {

            if (c.getCine().equals(cine_STR)) {
                salaPel = c.getSalas();
            }

        }

        return salaPel;

    }
    public ArrayList<Sesion> buscarSesionesPorProvinciaCineYSala(String prov, String cine_STR, String sala) {

        ArrayList<Cine> cineProv = new ArrayList<>();
        for (Provincia p : provincias) {
            if (p.getProvincia().equals(prov)) {
                cineProv = p.getCines();
            }
        }

        ArrayList<Sala> salaPel = new ArrayList<>();
        for (Cine c : cineProv) {

            if (c.getCine().equals(cine_STR)) {
                salaPel = c.getSalas();
            }

        }
        ArrayList<Sesion> sesionCine = new ArrayList<>();

        for (Sala s : salaPel) {

            if (s.getNombreSala().equals(sala)) {
                sesionCine = s.getSesions();
            }

        }
        return sesionCine;
    }

   

    /**
     *
     * @param numEntradas
     * @param pelicula
     */
    public void comprarEntrada(int numEntradas, int pelicula) {
        // TODO - implement Usuario.comprarEntrada
        throw new UnsupportedOperationException();
    }

    /**
     *
     * @param cantidad
     */
    public void pagarEntrada(int cantidad) {
        // TODO - implement Usuario.pagarEntrada
        throw new UnsupportedOperationException();
    }

    public int setNumEntradas() {
        // TODO - implement Usuario.setNumEntradas
        throw new UnsupportedOperationException();
    }

    /**
     *
     * @param peliculas
     */
    public void setPelicula(ArrayList peliculas) {
        // TODO - implement Usuario.setPelicula
        throw new UnsupportedOperationException();
    }

    public void setProvincia() {
        // TODO - implement Usuario.setProvincia
        throw new UnsupportedOperationException();
    }

    public void setCine() {
        // TODO - implement Usuario.setCine
        throw new UnsupportedOperationException();
    }

    public void elegirSesion() {
        // TODO - implement Usuario.elegirSesion
        throw new UnsupportedOperationException();
    }

    public void elegirPelicula() {
        // TODO - implement Usuario.elegirPelicula
        throw new UnsupportedOperationException();
    }

    public int numEntradas() {
        // TODO - implement Usuario.numEntradas
        throw new UnsupportedOperationException();
    }

    public Boolean ComprobarNumEntradas() {
        // TODO - implement Usuario.ComprobarNumEntradas
        throw new UnsupportedOperationException();
    }

    public void iniciarValoracion() {
        // TODO - implement Usuario.iniciarValoracion
        throw new UnsupportedOperationException();
    }

    public static String[] getMeses() {
        return meses;
    }

    public Usuario login() {       
       return ticketCine.entrar();
    }

    public String getDni() {
        return nombre;
    }

    public String getContrasenya() {
        return contrasenya;
    }

    public String getNombre() {
        return nombre;
    }
//    public void addEntrada(EntradaParaUsuario e){
//        entradas.add(e);
//    }
//    public ArrayList<EntradaParaUsuario> getEntradas() {
//        return entradas;
//    }
//
//    public void setEntradas(ArrayList<EntradaParaUsuario> entradas) {
//        this.entradas = entradas;
//    }
}
